Aurora Global Databaseをセカンダリークラスターにインスタンスを立てずに作成してみた
こんにちは、崔です。
Aurora Global Database は、データベースのパフォーマンスへの影響を最小限に留めながら、高速に複数のリージョンへのDR環境を構築可能なAuroraのレプリケーション機能です。
Aurora 独自のストレージ機能を利用して、RPO(目標復旧地点)を5秒未満に、RTO(目標復旧時間)を1分以内におさえた環境を準備できます。
Aurora Global Database のイメージは次のとおりです。
また、Aurora Global Database は、最大5つのセカンダリーリージョン、セカンダリーリージョンに最大16のレプリカインスタンスを持つことができます。
Aurora Global Database をマネジメントコンソールから作成する場合は、セカンダリークラスターとその配下のインスタンスを同時に作成する必要があります。
一方、AWS CLIから作成する場合は、それぞれ別々に作成できるので、やってみました。
グローバルデータベースを作成する
プライマリークラスターが作成されている環境で試してみます。 まずは、グローバルデータベースを作成します。
aws rds create-global-cluster \ --global-cluster-identifier global-database \ --source-db-cluster-identifier arn:aws:rds:ap-northeast-1:xxxxxxxxxxxx:cluster:primary-cluster
これで、グローバルデータベースが作成され、作成済みのプライマリークラスターとインスタンスがグローバルデータベースに追加されました。
セカンダリークラスターを作成する
次に、セカンダリークラスターを作成、アタッチします。
ソウルリージョン(ap-northeast-2)で試してみます。
aws rds --region ap-northeast-2 \ create-db-cluster \ --db-cluster-identifier secondary-cluster \ --global-cluster-identifier global-database \ --engine aurora-mysql \ --engine-version 5.7.mysql_aurora.2.08.1 \ --db-subnet-group-name db-subnet \ --vpc-security-group-ids sg-xxxxxxxxxxxxxxxx
グローバルデータベース配下に、セカンダリークラスタが作成されました。
現在の構成は、このような形です。
まだ、セカンダリークラスターにインスタンスを作成していない状態です。
プライマリークラスターにデータを投入する
これで、プライマリークラスターのインスタンスへの変更が、セカンダリークラスターに反映されるか確認してみます。
テーブルを作成し、データをinsertしてみます。
まずは、プライマリークラスターに新規テーブルを作成します。
CREATE TABLE test ( id INT(11) AUTO_INCREMENT NOT NULL, name VARCHAR(30) NOT NULL , PRIMARY KEY (id));
次に、データをinsertします。
insert into sampledb.test (name) values ('SCOTT');
テーブルの中身を確認します。
select * from sampledb.test;
id | name -- | ---- 1 | SCOTT
これで、プライマリークラスターのインスタンスにテーブルが作成され、データもinsertされています。
セカンダリークラスターにインスタンスを追加する
次に、セカンダリークラスターにインスタンスを追加します。
aws rds --region ap-northeast-2 \ create-db-instance \ --db-instance-class db.r5.large \ --db-cluster-identifier secondary-cluster \ --db-instance-identifier secondary-instance-1 \ --engine aurora-mysql
セカンダリークラスターにインスタンスを作成しました。この状態です。
セカンダリークラスターのインスタンスから確認する
セカンダリークラスターのインスタンスに接続して、先程のテーブルを確認してみます。
テーブルを検索します。
select * from sampledb.test;
id | name -- | ---- 1 | SCOTT
データが反映されていることが確認できました。
まとめ
マネジメントコンソールでは、セカンダリークラスター作成時にインスタンスも同時に作成する必要がありますが、 CLIを利用すれば、Aurora Global Database のセカンダリークラスターの追加が、配下にインスタンスを立てずに可能となります。
これにより、必要なときにセカンダリーインスタンスを立ち上げることが可能です。
つまり、RTO(目標復旧時間)がシビアに求められない環境や、2つ目以降のセカンダリークラスターの場合は、インスタンスの利用料金をセーブしつつ、DRサイトを構築することが可能になります。